package fi.otavanopisto.muikku.atests;
import javax.ejb.Stateful;
import javax.enterprise.context.RequestScoped;
import javax.inject.Inject;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
import fi.otavanopisto.muikku.plugin.PluginRESTService;
import fi.otavanopisto.muikku.plugins.forum.ForumController;
import fi.otavanopisto.muikku.plugins.forum.model.ForumArea;
import fi.otavanopisto.muikku.plugins.forum.model.ForumThread;
import fi.otavanopisto.muikku.plugins.forum.model.ForumThreadReply;
import fi.otavanopisto.muikku.session.local.LocalSession;
import fi.otavanopisto.muikku.session.local.LocalSessionController;
import fi.otavanopisto.security.rest.RESTPermit;
import fi.otavanopisto.security.rest.RESTPermit.Handling;
@RequestScoped
@Path("/test_forum")
@Stateful
@Produces("application/json")
@Consumes("application/json")
public class ForumAcceptanceTestsRESTService extends PluginRESTService {
private static final long serialVersionUID = 4192161644908642797L;
@Inject
@LocalSession
private LocalSessionController localSessionController;
@Inject
private ForumController forumController;
@DELETE
@Path("/areas/{AREAID}")
@RESTPermit (handling = Handling.UNSECURED)
public Response deleteForumArea(@PathParam ("AREAID") Long forumAreaId) {
ForumArea forumArea = forumController.findForumAreaById(forumAreaId);
if (forumArea == null) {
return Response.status(Status.NOT_FOUND).entity("ForumArea not found").build();
}
forumController.deleteArea(forumArea);
return Response.noContent().build();
}
@DELETE
@Path("/areas/{AREAID}/threads/{THREADID}")
@RESTPermit (handling = Handling.UNSECURED)
public Response deleteForumThread(
@PathParam ("AREAID") Long forumAreaId,
@PathParam ("THREADID") Long forumThreadId) {
ForumThread forumThread = forumController.getForumThread(forumThreadId);
if (forumThread == null) {
return Response.status(Status.NOT_FOUND).entity("ForumThread not found").build();
}
forumController.deleteThread(forumThread);
return Response.noContent().build();
}
@DELETE
@Path("/areas/{AREAID}/threads/{THREADID}/replies/{REPLYID}")
@RESTPermit (handling = Handling.UNSECURED)
public Response deleteForumThreadReply(
@PathParam ("AREAID") Long forumAreaId,
@PathParam ("THREADID") Long forumThreadId,
@PathParam ("REPLYID") Long forumThreadReplyId) {
ForumThreadReply forumThreadReply = forumController.getForumThreadReply(forumThreadReplyId);
if (forumThreadReply == null) {
return Response.status(Status.NOT_FOUND).entity("ForumThreadReply not found").build();
}
forumController.deleteReply(forumThreadReply);
return Response.noContent().build();
}
}